package com.jinghang.scala_base

/**
  *
  * author: zhangXu
  * createTime: 2018-12-07 19:02
  **/
object _010FunctionApp {

  def main(args: Array[String]): Unit = {
    //Scala 调用方法时候可以不加（）
    //每一行语句后边可以不用加 ; ,加上也不会报错
    //sayHello();
    //sayHello
    sayHello("gaobo")
    sayHi()
    sayHi("xiaohZang")
    println(price(100, 10))
    println(price(100, 10))
    //了解
    println(price(count = 10, money = 100))
    sum(1,2,3)
    sum(1,2,3,4,5,6)

    val a = 1;
    if(a>0){
      true
    }else{
      false
    }


  }

  def sum(x: Int, y: Int): Int = {
    x + y //最后一行就是返回值
  }


  /**
    * def：声明方法的关键字
    * sayHello：方法名，首字母小写
    * “：”冒号后边定义返回值类型 Int,String,Unit(类似Java中的void)
    *
    */
 /* def sayHello(): Unit = {
    println("hello everybody")
  }*/

  def sayHello():Unit={
    println("hello everybody")
  }

  /*def sayHello(name: String): Unit = {
    println(name)
  }*/

  /**
    * 方法的重载：
    *   方法名相同，参数个数或参数类型不一样
    * @param name
    */
  def sayHello(name: String):Unit ={
    println(name)
  }

  //默认参数
  def sayHi(name: String = "zhangSan"): Unit = {
    println(name)
  }

  //使用时,通过名字传入参数，与定义顺序无关
  /**
    *
    * @param money 商品总价
    * @param count 商品数量
    * @return 商品单价
    */
  def price(money: Double, count: Double): Double = {
    money / count
  }

  /**
    *
    * @param x
    * @param y
    * @param z
    * @return
    */
  def sum(x: Int, y: Int, z: Int): Int = {
    return x + y + z //最后一行是返回值
  }

  /**
    * 可变参数
    * @param numbers 0 1 2 3 4 5
    * @return
    */
  def sum(numbers: Int*): Int = {
    //var 声明变量关键字
    //result:Int 参数名称在前，参数类型在后，Int类型也可以省略
    var result:Int = 0

    /**
      * 遍历集合和数组
      * number 代表numbers 的一个元素
      *
      * 把numbers参数遍历累加
      */
    for (number <- numbers) {
      println("number:"+number)

      result += number
      //result = result +number
    }
    result
  }
}
